/**
 * 将菜单数组转换成树形菜单
 * @param source    源数组
 * @param id        id属性名称
 * @param parentId  父节点名称
 * @param children  子节点名称
 * @returns {*}
 */
export function makeTree(source: any, id: string, parentId: string, children: string) {
    const cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
    const data = cloneData.filter((father: any) => {
        // 找出当前节点的所有子节点
        const branchArr = cloneData.filter((child: any) => father[id] === child[parentId]) || [];
        // 将子节点赋值给父节点的children
        if (branchArr.length > 0) {
            father[children] = branchArr;
        } else {
            father[children] = [];
        }
        return father[parentId] === 0; // 如果第一层不是parentId=0，请自行修改
    });
    return data.length > 0 ? data : source;
}
